/*
 * @Description:自定义confirm  二次确认组件
 * @Author:
 * @Date:
 * @LastEditors:
 * @LastEditTime:
 */

import Vue from "vue";
import confirm from "./index.vue";

let confirmConstructor = Vue.extend(confirm);

let removeTimer;

// 移除元素
function removeEL(el) {
  window.clearTimeout(removeTimer);
  removeTimer = window.setTimeout(() => {
    document.body.removeChild(el);
  }, 200);
}

let myConfirm = function(text) {
  return new Promise((resolve, reject) => {
    let confirmDom = new confirmConstructor({
      el: document.createElement("div"),
    });
    document.body.appendChild(confirmDom.$el); //new一个对象，然后插入body里面
    confirmDom.text = { ...confirmDom.text, ...text }; //text为传入的参数，这里规定对象，不传入采用默认

    // 确认
    confirmDom.confirm = function() {
      resolve(confirmDom.msg); //返回数据
      confirmDom.isShow = false;
      removeEL(confirmDom.$el);
    };
    // 取消
    confirmDom.cancel = function() {
      reject(confirmDom.msg); //返回数据
      confirmDom.isShow = false;
      removeEL(confirmDom.$el);
    };
  });
};

export default myConfirm;

//在需要的地方直接用以下方法调用即可：
//   this.$confirm({
//     type:'提示',
//     msg:'是否删除这条信息？',
//     btn:{
//         confirm:'yes',
//         cancel:'no'
//     }
// }).then(( data) => {
//     console.log('ok')
// })
// .catch((data) => {
//     console.log('no')
// })
